package com.swak.vertx.transport;

import com.swak.vertx.config.VertxConfig;
import com.swak.vertx.transport.codec.Msg;

import io.vertx.core.AsyncResult;
import io.vertx.core.Handler;
import io.vertx.core.Vertx;
import io.vertx.core.eventbus.Message;

/**
 * 代理处理 Vertx 的 相关服务
 *
 * @author: lifeng
 * @date: 2020/3/29 21:27
 */
public interface VertxProxy {

	/**
	 * 发送消息
	 *
	 * @param address 地址
	 * @param request 请求
	 * @param timeout 超时时间
	 */
	void sentMessage(String address, Msg request, int timeout);

	/**
	 * 发送消息
	 *
	 * @param address      地址
	 * @param request      请求
	 * @param timeout      发送的超时时间
	 * @param replyHandler 回调
	 */
	void sentMessage(String address, Msg request, int timeout, Handler<AsyncResult<Message<Msg>>> replyHandler);

	/**
	 * 实际的Vertx 对象: 本地对象
	 *
	 * @return Vertx
	 */
	Vertx me();

	/**
	 * 全局配置
	 * 
	 * @return
	 */
	VertxConfig config();
}